﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using AutoMapper;
using DTO;

namespace DAO
{
    public class PhieuDatCho_DAO
    {
        public static PhieuDatCho_DTO CreatePhieuDatChoDTO(PhieuDatCho phieudatcho)
        {
            PhieuDatCho_DTO phieudatchoDTO = new PhieuDatCho_DTO();
            Mapper.CreateMap<PhieuDatCho, PhieuDatCho_DTO>();
            phieudatchoDTO = Mapper.Map<PhieuDatCho, PhieuDatCho_DTO>(phieudatcho);
            return phieudatchoDTO;
        }

        public static PhieuDatCho CreatePhieuDatChoEFE(PhieuDatCho_DTO phieudatchoDTO)
        {
            PhieuDatCho phieudatcho = new PhieuDatCho();
            Mapper.CreateMap<PhieuDatCho_DTO, PhieuDatCho>();
            phieudatcho = Mapper.Map<PhieuDatCho_DTO, PhieuDatCho>(phieudatchoDTO);
            return phieudatcho;
        }
        public BindingList<PhieuDatCho_DTO> GetPhieuDatChoList()
        {
            BindingList<PhieuDatCho_DTO> listPhieuDatCho = new BindingList<PhieuDatCho_DTO>();
            try
            {
                QLCBDataContext context = new QLCBDataContext();
                var query = from phieudat in context.PhieuDatChos select phieudat;
                foreach (var cb in query)
                {
                    PhieuDatCho_DTO phieudatDTO =  CreatePhieuDatChoDTO(cb);
                    listPhieuDatCho.Add(phieudatDTO);
                }
            }
            catch (System.Exception ex)
            {
                string str = ex.Message;
            }
            return listPhieuDatCho;
        }

        public PhieuDatCho_DTO GetPhieuDatChoDetails(string maPhieuDat)
        {
            PhieuDatCho_DTO phieudatDTO = new PhieuDatCho_DTO();
            try
            {
                QLCBDataContext context = new QLCBDataContext();
                var query = from pd in context.PhieuDatChos
                            where pd.MaPhieuDat == maPhieuDat
                            select pd;
                PhieuDatCho phieudatEF = query.First();
                phieudatDTO = CreatePhieuDatChoDTO(phieudatEF);
            }
            catch (System.Exception)
            { }
            return phieudatDTO;
        }

        public static string MaPhieuMax()
        {
            QLCBDataContext context = new QLCBDataContext();
            string query = (from pd in context.PhieuDatChos select pd.MaPhieuDat).Max();
            return query;
        }

        public void InsertPhieuDatCho(PhieuDatCho_DTO phieudatDTO)
        {
            try
            {
                QLCBDataContext context = new QLCBDataContext();
                PhieuDatCho phieudat = new PhieuDatCho();
                phieudat.MaPhieuDat = phieudatDTO.MaPhieuDat;
                phieudat.MaChuyenBay = phieudatDTO.MaChuyenBay;
                phieudat.MaHangVe = phieudatDTO.MaHangVe;
                phieudat.MaHanhKhach = phieudatDTO.MaHanhKhach;
                phieudat.GiaTien = phieudatDTO.GiaTien;
                phieudat.NgayDat = phieudatDTO.NgayDat;
                context.PhieuDatChos.InsertOnSubmit(phieudat);
                context.SubmitChanges();
            }
            catch
            { }
        }

        public void UpdatePhieuDatCho(PhieuDatCho_DTO phieudatDTO)
        {
            try
            {
                QLCBDataContext context = new QLCBDataContext();
                PhieuDatCho phieudat = new PhieuDatCho();
                phieudat = context.PhieuDatChos.Single(pd => pd.MaPhieuDat == phieudatDTO.MaPhieuDat);
                phieudat.MaPhieuDat = phieudatDTO.MaPhieuDat;
                phieudat.MaChuyenBay = phieudatDTO.MaChuyenBay;
                phieudat.MaHangVe = phieudatDTO.MaHangVe;
                phieudat.MaHanhKhach = phieudatDTO.MaHanhKhach;
                phieudat.GiaTien = phieudatDTO.GiaTien;
                phieudat.NgayDat = phieudatDTO.NgayDat;
                context.SubmitChanges();
            }
            catch
            { }
        }

        public void DeletePhieuDatCho(PhieuDatCho_DTO phieudatDTO)
        {
            try
            {
                QLCBDataContext context = new QLCBDataContext();
                PhieuDatCho phieudat = context.PhieuDatChos.Single(pd => pd.MaPhieuDat == phieudatDTO.MaPhieuDat);
                context.PhieuDatChos.DeleteOnSubmit(phieudat);
                context.SubmitChanges();
            }
            catch
            { }
        }
    }
}
